#ifndef CHOISIRLISTE_H
#define CHOISIRLISTE_H

#include "BaseUI.h"

#include "StatusCode.h"

class QGroupBox;
class QButtonGroup;
class QVBoxLayout;

/** Permet de choisir un élément d'une liste donnée.
 * Est utilisé pour choisir la Race ou la Classe lors de la
 * création. Une version spécialisée est utilisée pour le choix du
 * programme de démarrage.
 *
 * Les différents items sont représenté par des radiobuttons. Il est
 * également possible de spécifier pour chaque boutons le message
 * d'aide (tooltip).
 *
 * @see Demarrage
 * @author Johan "Solo" Luisier
 */
class ChoisirListe : public BaseUI
{
  Q_OBJECT
 public:
  ChoisirListe(const std::string& nomGrp, const std::vector<std::string> *noms,
	       const std::vector<std::string> *aide, QWidget* parent = 0);
  ChoisirListe(const std::string& nomFen, const std::string& nomGrp,
	       const std::vector<std::string> *noms,
	       const std::vector<std::string> *aide, QWidget* parent = 0);
  ChoisirListe(const ChoisirListe& choixListe);
  virtual ~ChoisirListe();
  StatusCode demanderChoix();
 protected:
  /**
   * Contient la valeur courante de l'item sélectionné. Est maintenu à
   * jour en temps réel.
   */
  unsigned int selection;
  /**
   * Cadre autour des radiobuttons.
   */
  QGroupBox *boite;
  /**
   * Groupe "logique" des boutons, permet une meilleure gestion de la
   * connection à la méthode estChoisi.
   */
  QButtonGroup *groupe;
  /**
   * Layout des boutons à l'intérieur du cadre.
   */
  QVBoxLayout *boiteLayout;
 private slots:
  void estChoisi(const int& i);
};

#endif // CHOISIRLISTE_H
